package com.bt.lms.ui.action.registration.stu;

import com.bt.lms.ui.page.stu.PageImportsStuInfo;
import com.bt.lms.ui.page.common.action.pageenp.ApplyStuLabAction;
import com.bt.lms.ui.page.stu.PageMainStudentList;
import com.bt.lms.ui.page.stu.vo.ImportStuInfosVo;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.Pane;

import java.io.IOException;
import java.net.Socket;

/**
 * 批量导入报名信息 保存按钮事件
 */
public class PageImportsStuInfoSaveBtnAction implements EventHandler {


    /**
     * 批量导入报名信息界面
     */
    private PageImportsStuInfo pageImportsStuInfo;

    @Override

    public void handle(Event event) {


        //1.获取用户输入内容
        ImportStuInfosVo importStuInfosVo = getInPrams();

        //2.验证用户输入内容
        String validMes = validInParams(importStuInfosVo);
//
//        //3.组包
//        ReqMes reqMes = null;
//        if (null == validMes) {
//            reqMes = handleReqMes(importStuInfosVo);
//        } else {
//
//            //提示框
//            Alert alert = new Alert(Alert.AlertType.WARNING);
//            alert.setContentText(validMes);
//            alert.showAndWait();
//
//
//            //提示程序终止
//
//
//            return;
//
//        }
//
//        //4.组网
//
//        Socket socket = getNet();
//
//        //5.发送消息
//
//        boolean flag = sendReqMes(socket, reqMes);


//        String wroMes = "";
//
//        //所属招生计划部分
//        TextField ofEnpTF = (TextField) pageImportsStuInfo.lookup("#ofEnpTF");
//        String ofEnpTFText = ofEnpTF.getText();
//        String ofEnpTFTextTrim = ofEnpTFText.trim();
//        if (ofEnpTFTextTrim.equals("")) {//如果为空
//            wroMes += "所属招生计划必填\r\n";
//        }
//
//
//        //数据校检结果
//        TextArea dataResultTA = (TextArea) pageImportsStuInfo.lookup("#dataResultTA");
//        String dataResultTAText = dataResultTA.getText();
//        String dataResultTATrim = dataResultTAText.trim();//去掉空格
//
//
//        if (dataResultTATrim.length() > 255) {//长度不能超过255字
//            wroMes += "数据校检长度不能超过255字\r\n";
//
//        }
//
//
//        if (!"".equals(wroMes)) {
//            Alert alert1 = new Alert(Alert.AlertType.WARNING);
//            alert1.setContentText(wroMes);
//            alert1.showAndWait();
//
//        } else {
//            Alert alert = new Alert(Alert.AlertType.INFORMATION);
//            alert.setContentText("保存成功");
//            alert.showAndWait();
        //保存按钮返回主界面
        PageMainStudentList pageMainStudentList = new PageMainStudentList();
        Pane pane = ApplyStuLabAction.pageSkipInfo.getPane();
        Integer index = ApplyStuLabAction.pageSkipInfo.getIndex();
        pane.getChildren().set(index, pageMainStudentList);

    }


//    }
//
//    /**
//     * 发送消息
//     *
//     * @param socket
//     * @param reqMes
//     * @return
//     */
//    private boolean sendReqMes(Socket socket, ReqMes reqMes) {
//
//        //编码
//        byte[] mesByte = encodeReqMes(reqMes);
//
//        //发送消息
//        try {
//            OutputStream outputStream = socket.getOutputStream();
//            outputStream.write(mesByte);
//            outputStream.flush();
//            outputStream.close();
//        } catch (IOException e) {
////            throw new RuntimeException(e);
////        }
////
////
////        return true;
//    }

    /**
     * 将消息对象变成字节数组
     *
     * @param reqMes 消息包
     * @return
     */
//    private byte[] encodeReqMes(ReqMes reqMes) {
//
//        //消息头功能类型 2字节
//        byte[] reqMesHeaderType = new byte[2];
//
//        //消息体的字节数量
//        byte[] reqMesBodyByteNo = new byte[2];
//        //获取到消息头
//        ReqMesHeader reqMesHeader = reqMes.getReqMesHeader();
//        //获取到消息头的类型
//        Integer mesType = reqMesHeader.getMesType();
//
//        //int转成byte数组
//
//        byte[] reqHeaderTypePre = this.intoBytes(mesType);
//        reqMesHeaderType[0] = reqHeaderTypePre[2];
//        reqHeaderTypePre[1] = reqHeaderTypePre[3];
//
//        //获取消息体内容
//        String inParams = reqMes.getReqMesBody().getContent();
//        byte[] inParamsBytes = inParams.getBytes();
//        int bodyByteLen = inParamsBytes.length;//入参字节长度
//
//        //int转byte数组
//
//        byte[] reqBodyBytePre = this.intoBytes(bodyByteLen);
//        reqMesBodyByteNo[0] = reqBodyBytePre[2];
//        reqMesBodyByteNo[1] = reqBodyBytePre[3];
//
//        int mesLen = reqMesHeaderType.length + reqMesBodyByteNo.length + inParamsBytes.length;
//        byte[] mesByte = new byte[mesLen];
//
//        System.arraycopy(reqMesHeaderType,0,mesByte,0,2);
//        System.arraycopy(reqMesBodyByteNo,0,mesByte,2,2);
//        System.arraycopy(inParamsBytes,0,mesByte,4,bodyByteLen);
//
//
//        return mesByte;
//    }

    /**
     * 组网
     *
     * @return
     */
    private Socket getNet() {

        String ip = "127.0.0.1";
        Integer severPort = 6666;
        Socket socket = null;

        try {
            socket = new Socket(ip, severPort);
        } catch (IOException e) {
            return null;
        }

        return socket;
    }
//
//    /**
//     * 组包
//     *
//     * @param importStuInfosVo 用户输入
//     * @return 消息包
//     */
//    private ReqMes handleReqMes(ImportStuInfosVo importStuInfosVo) {
//
//        //消息包
//        ReqMes reqMes = new ReqMes();
//
//        //消息头
//        ReqMesHeader reqMesHeader = new ReqMesHeader();
//        reqMes.setReqMesHeader(reqMesHeader);
//
//        //消息类型
//
//        reqMesHeader.setMesType(4003);
//
//        //消息体
//        ReqMesBody reqMesBody = new ReqMesBody();
//        reqMes.setReqMesBody(reqMesBody);
//
//        //组装体
//        String learningCen = importStuInfosVo.getLearningCen();
//        String enp = importStuInfosVo.getEnp();
//        String importFile = importStuInfosVo.getImportFile();
//        String dataResult = importStuInfosVo.getDataResult();
//
//        //内容
//        String content = "{\"learningCen\": \"" + learningCen + "\"," +
//                "\"enp\":\"" + enp + "\"," +
//                "\"importFile\":\"" + importFile + "\"," +
//                "\"dataResult\":\"" + dataResult + "\"}";
//
//        reqMesBody.setContent(content);
//
//        //设置头里的  体长度
//        int bodyLen = content.getBytes().length;
//        reqMesHeader.setBodyLen(bodyLen);
//
//
//        return reqMes;
//    }

    /**
     * 验证用户输入内容
     *
     * @param importStuInfosVo
     * @return
     */
    private String validInParams(ImportStuInfosVo importStuInfosVo) {

        String mes = "";

        //选择所属学习中心部分

        String learningCen = importStuInfosVo.getLearningCen();

        String learningCenNull = "所属学习中心必填\r\n";

        if (learningCen.equals("")) {
            mes += learningCenNull;
        }

        //选择所属招生计划部分
        String enp = importStuInfosVo.getEnp();
        String enpNull = "所属招生计划必填\r\n";
        if (enp.equals("")) {
            mes += enpNull;
        }


        //数据校验结果
        String dataResult = importStuInfosVo.getDataResult();
        String dataResultLen = "数据校验结果内容超过400字";
        if (dataResult.length() > 400) {
            mes += dataResultLen;

        }


        //返回结果集
        if ("".equals(mes)){
            return null;

        }else {
            return mes;

        }



    }

    /**
     * 获取用户输入内容
     *
     * @return
     */
    private ImportStuInfosVo getInPrams() {


        //封装对象
        ImportStuInfosVo importStuInfosVo = new ImportStuInfosVo();

        //学习中心部分
        TextField learningCenTF = (TextField) pageImportsStuInfo.lookup("#learningCenTF");//学习中心
        String learningStr = learningCenTF.getText().trim();
        importStuInfosVo.setLearningCen(learningStr);

        //招生计划部分
        TextField ofEnpTF = (TextField) pageImportsStuInfo.lookup("#ofEnpTF");//招生计划
        String ofEnpStr = ofEnpTF.getText().trim();
        importStuInfosVo.setEnp(ofEnpStr);

        //导入文件部分
        TextField selectFileTF = (TextField) pageImportsStuInfo.lookup("#selectFileTF");//选择文件

        //数据校验结果
        TextArea dataResultTA = (TextArea) pageImportsStuInfo.lookup("#dataResultTA");//数据校验结果
        String dataResultStr = dataResultTA.getText().trim();
        importStuInfosVo.setDataResult(dataResultStr);


        return importStuInfosVo;
    }


    /**
     * 将int转成byte数组
     *
     * @param value
     * @return
     */
    public static byte[] intoBytes(int value) {
        byte[] src = new byte[4];
        src[0] = (byte) ((value >> 24) & 0xFF);
        src[1] = (byte) ((value >> 16) & 0xFF);
        src[2] = (byte) ((value >> 8) & 0xFF);
        src[3] = (byte) (value & 0xFF);

        return src;
    }


    public PageImportsStuInfo getPageImportsStuInfo() {
        return pageImportsStuInfo;
    }

    public void setPageImportsStuInfo(PageImportsStuInfo pageImportsStuInfo) {
        this.pageImportsStuInfo = pageImportsStuInfo;
    }
}
